Cloud-based applications are software applications that employ services available over the Internet or some other network to assist the applications in performing their various tasks. In a typical scenario, a user installs a frontend client (e.g., an “app”) on a client device, which connects to a backend server over the Internet. The frontend client typically manages a user interface and performs local processing on the client device, whereas the backend server may access large databases, store user data, and perform computationally intensive tasks. Users currently enjoy a wide range of cloud-based applications, including applications for data storage, video streaming, web conferencing, mapping, banking, and many others.
A common use for a cloud-based application is to provide user data storage in the cloud. For example, a user installs a data storage client on the user's device and designates a local folder for storing files. Any time the user adds a file to the local folder, the data storage client automatically uploads the file to a backend system running in the cloud. The user may install similar data storage clients for the same application on other devices, and cloud-based services on the backend system coordinate with the different devices to ensure that all the devices share the same files and file versions. For example, when a frontend client on one of the devices creates a new file, the cloud-based services sync the new file to the other devices, so that each device stores an identical copy of the file.